package com.mzlalal.repeat.submit.prop;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.NotBlank;
import java.util.List;

/**
 * 防止重复提交配置文件
 *
 * @author Mzlalal
 * @date 2021年4月19日 17:30:10
 **/
@Data
@Validated
@Component
@ConfigurationProperties(prefix = "mz.repeat.submit")
@EnableConfigurationProperties(RepeatSubmitProperties.class)
public class RepeatSubmitProperties {
    /**
     * 是否开启防止重复提交拦截器
     */
    private boolean enableRepeatSubmit = false;
    /**
     * 放行GET请求
     * eg: GET请求在Restful中作为获取资源的请求,不需要重复过滤
     */
    private boolean skipMethodGet = true;
    /**
     * 执行成功后释放
     */
    private boolean unlockWhenSuccess = false;
    /**
     * 锁最小保持时间
     * eg: 默认3秒
     */
    private int leaseLockTime = 3;
    /**
     * 自定义切入点表达式
     */
    @NotBlank(message = "自定义切入点表达式(customExpression)不能为空")
    private String customExpression;
    /**
     * 请求头TOKEN名称
     * eg: F-Authorization
     */
    @NotBlank(message = "请求头TOKEN名称(headerTokenName)不能为空")
    private String headerTokenName;
    /**
     * 提示文本(JSON字符串)
     * 如果中文乱码,请尝试以下方法
     * 1. 属性文件编码调整为UTF-8,重新编译
     */
    @NotBlank(message = "提示文本(tipJsonText)不能为空")
    private String tipJsonText;
    /**
     * 配置需要拦截的路径
     */
    private List<String> includePattern;
    /**
     * 配置不需要拦截的路径
     */
    private List<String> excludePattern;
}
